#include "..\Modulos\ColAsist\colasist.h"
#include <stdlib.h>

void DesplegarMenu(){
    printf("\n\nMENU:\n\n");
    printf("1 - Registrar un nuevo asistente\n");
    printf("2 - Determinar si un asistente se encuentra registrado\n");
    printf("3 - Desplegar los datos de un asistente\n");
    printf("4 - Sortear numeros favorecidos (*)\n");
    printf("5 - Listar asistentes favorecidos\n");
    printf("6 - Promedio de edad de los asistentes\n");
    printf("7 - Listar Hash (*)\n");
    printf("8 - Salir\n");
    printf("\n\n");
}

void PressEnter(){
    char tecla;
    fflush(stdin);
    printf("\n\n\n                    Presione 'Enter' para continuar");
    scanf("%c", &tecla);
    fflush(stdin);
}

int main(){
    Hash colAsistentes;
    Asistente asistente;
    int menu,i,numAsistente;
    int favorecidos[CANT];

    CrearHash(colAsistentes);

    for (i=0; i<CANT; i++) //Inicializamos arreglo de sorteo
        favorecidos[i] = -1;
    do{
        printf("     ************* BIENVENIDO AL PROGRAMA DE ASISTENTES *************");
        printf("\n\nNumeros favorecidos: ");
        if (favorecidos[0] != -1)
            for (i=0; i<CANT; i++)
                printf(" %3d ",favorecidos[i]);
        else
            printf("Aun no se ha realizado el sorteo");
        DesplegarMenu();
        printf("Ingrese opcion de menu: ");
        scanf("%d",&menu);
        printf("\n\n");
        fflush(stdin);
        switch (menu){
            case 1: CargaAsistente(asistente);
                    if (PerteneceHash(colAsistentes,DarClave(asistente)))
                        printf("\nEl asistente ya fue registrado anteriormente");
                    else{
                        InsertarHash(colAsistentes,asistente);
                        printf("\nEl asistente se registro correctamente");
                    }
                    PressEnter();
                    system("cls");
                    break;

            case 2: //CargaAsistente(asistente);
                    printf("Ingrese el numero a consultar: ");
                    scanf("%d", &numAsistente);
                    if (PerteneceHash(colAsistentes,numAsistente))
                        printf("\nEl asistente se encuentra registrado");
                    else
                        printf("\nEl asistente no se encuentra registrado");
                    fflush(stdin);
                    PressEnter();
                    system("cls");
                    break;

            case 3: printf("Ingrese el numero a consultar: ");
                    scanf("%d", &numAsistente);
                    if (PerteneceHash(colAsistentes,numAsistente)){
                        asistente = ObtenerHash(colAsistentes,numAsistente);
                        desplegaAsistente(asistente);
                    }
                    else
                        printf("\nEl asistente no se encuentra registrado");
                    PressEnter();
                    system("cls");
                    break;

            case 4: for (i=0; i<CANT; i++)
                        favorecidos[i] = (rand()%(N/2)) + i;
                    printf("Numeros favorecidos: ");
                    for (i=0; i<CANT; i++)
                        printf(" %3d ",favorecidos[i]);
                    PressEnter();
                    system("cls");
                    break;

            case 5: if (favorecidos[0] != -1)
                        ListarFavorecidos(colAsistentes,favorecidos);
                    else
                        printf("Aun no se ha realizado el sorteo");
                    PressEnter();
                    system("cls");
                    break;

            case 6: printf("El promedio de edades de los asistentes es de %3.2f", PromedioEdades(colAsistentes));
                    PressEnter();
                    system("cls");
                    break;
            case 7: desplegarHash(colAsistentes);
                    PressEnter();
                    system("cls");
                    break;
        }

    }while(menu!=8);
    return 0;
}
